import uuid
from datetime import datetime

from pydantic import BaseModel, ConfigDict

from .base import IDModel, TimestampModel


class SearchSpaceBase(BaseModel):
    name: str
    description: str | None = None


class SearchSpaceCreate(SearchSpaceBase):
    # Optional on create, will use defaults if not provided
    citations_enabled: bool = True
    qna_custom_instructions: str | None = None


class SearchSpaceUpdate(BaseModel):
    # All fields optional on update - only send what you want to change
    name: str | None = None
    description: str | None = None
    citations_enabled: bool | None = None
    qna_custom_instructions: str | None = None


class SearchSpaceRead(SearchSpaceBase, IDModel, TimestampModel):
    id: int
    created_at: datetime
    user_id: uuid.UUID
    # QnA configuration
    citations_enabled: bool
    qna_custom_instructions: str | None = None

    model_config = ConfigDict(from_attributes=True)
